import Vue from 'vue'

// 注册一个全局自定义指令 `v-auth`
Vue.directive('auth', {
  componentUpdated: function (el, binding) {
    handleAuth(el, binding.value)
  },
  inserted: function (el, binding) {
    handleAuth(el, binding.value)
    console.log('el.innerText:', el.innerText)
  },
  update: function (el, binding) {
    handleAuth(el, binding.value)
  }
})


// 处理权限
export const handleAuth = function (el, value) {
  if (value && value['type'] && value['code'] && value['this_']) {
    // 处理当前页面是未授权页面【没有在后端菜单配置的页面】
    if (value.this_.operationsByAuthPath && value.this_.operationsByAuthPath.length > 0 && el) {
      console.log('处理当前页面是未授权页面------------> 权限授权：', value.name)
      isAuth(value.this_.operationsByAuthPath, el, value)
    }

    // 判断当前页面周期内的 code 所在的el 是否已经删除了
    if (value.this_.operationsByAuth && el) {
      console.log('开始处理当前页面的操作--------------> 权限授权：', value.name)
      isAuth(value.this_.activeOperations, el, value)
    }

    // 详情页单独 -> 根据当前角色的全部操作权限处理
    if (value.this_.checkAllOperation && el) {
      console.log('operationsAll', value.this_.operationsAll)
      isAuth(value.this_.operationsAll, el, value)
    }
  } else {
    console.error(el + '[授权参数type、code、this_不完整]')
  }
}

// 处理操作授权
function isAuth (activeOperations, el, value) {
  if (activeOperations && activeOperations.length > 0) {
    activeOperations.forEach((q) => {
      if (q.code === value['code'] && q.type === value['type'] && q.auth === 0) {
        // el.remove()
        el.style.display = 'none'
        value.this_.operationsByAuth[value.code] = true
        // console.log(value.code + '：操作授权处理成功')
      }
    })
  }
}
